package com.shop.om.interceptors;

import com.jt.common.interceptor.BaseInterceptor;
import com.shop.om.filter.BaseFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

//@Configuration
public class OmInterceptors  implements  WebMvcConfigurer{

//    @Override
//    public void addInterceptors(InterceptorRegistry registry) {
//        InterceptorRegistration interceptorRegistration = registry.addInterceptor(new BaseInterceptor());
//        interceptorRegistration.addPathPatterns("/**");
//
//    }

//    @Override
//    public void addCorsMappings(CorsRegistry registry) {
//        registry.addMapping("/**")
//                .allowedOrigins("*")
//                .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
//                .allowCredentials(true)
//                .allowedHeaders("*")
//                .maxAge(3600);
//    }

    //改用过滤器CorsFilter 来配置跨域，由于Filter的位置是在Interceptor之前的，问题得到解决
//    @Bean
//    public FilterRegistrationBean  corsFilter() {
//        FilterRegistrationBean bean = new FilterRegistrationBean();
//        CorsConfiguration config = new CorsConfiguration();
//        // 设置允许跨域请求的域名
//        config.addAllowedOrigin(CorsConfiguration.ALL);
//        config.addAllowedOrigin("http://localhost:8090");
//
//        // 是否允许证书 不再默认开启
//        config.setAllowCredentials(true);
//        // 设置允许的方法
//        config.addAllowedMethod(CorsConfiguration.ALL);
//        // 允许任何头
//        config.addAllowedHeader(CorsConfiguration.ALL);
//        config.setMaxAge(3600L);
//        //config.addExposedHeader("token");
//        UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
//        configSource.registerCorsConfiguration("/**", config);
//        bean.setFilter(new CorsFilter(configSource));
//        bean.setOrder(Ordered.HIGHEST_PRECEDENCE);//利用FilterRegistrationBean，将拦截器注册靠前,避免被其它拦截器首先执行
//        bean.addUrlPatterns("/*");
//        return bean;
//    }

}
